#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll _=1e6+5;
ll n,q,x,s=1,t,a[_],i,j,M;
ll qp(ll x,ll y){ll z=1;for(;y;y>>=1,x=x*x%M)if(y&1)z=z*x%M;return z;}
void cal(ll x,bool f){
ll y=0;
while(x%M==0)x/=M,y++;
if(f)t+=y,s=s*x%M;
else t-=y,s=s*qp(x,M-2)%M;
}
void p(ll x){
while(1^x&1)x>>=1;
for(i=3;i*i<=x;i+=2)if(x%i==0){
cal(a[i]+1,0);
while(x%i==0)x/=i,a[i]++;
cal(a[i]+1,1);
}
if(x>1)cal(a[x]+1,0),a[x]++,cal(a[x]+1,1);
}
int main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>x>>q>>M;
while(1^x&1)x>>=1;
for(i=3;i*i<=x;i+=2)if(x%i==0){
cal(a[i]+1,0);
while(x%i==0)x/=i,a[i]++;
cal(a[i]+1,1);
}
if(x>1){if(x<_)a[x]++;s=s*2%M;}
while(q--)cin>>x,p(x),cout<<(t?0ll:s)<<'\n';
}
1025D - Recovering BST | 439A - Devu the Singer and Churu the Joker |
1323A - Even Subset Sum Problem | 1095A - Repeating Cipher |
630F - Selection of Personnel | 630K - Indivisibility |
20B - Equation | 600B - Queries about less or equal elements |
1015A - Points in Segments | 1593B - Make it Divisible by 25 |
680C - Bear and Prime 100 | 1300A - Non-zero |
1475E - Advertising Agency | 1345B - Card Constructions |
1077B - Disturbed People | 653A - Bear and Three Balls |
794A - Bank Robbery | 157A - Game Outcome |
3B - Lorry | 1392A - Omkar and Password |
489A - SwapSort | 932A - Palindromic Supersequence |
433A - Kitahara Haruki's Gift | 672A - Summer Camp |
1277A - Happy Birthday Polycarp | 577A - Multiplication Table |
817C - Really Big Numbers | 1355A - Sequence with Digits |
977B - Two-gram | 993A - Two Squares |